package org.example.myleet.p757;

import java.util.Arrays;

public class Solution {
    public int intersectionSizeTwo(int[][] intervals) {
        Arrays.sort(intervals, (v1, v2) -> v1[1] != v2[1] ? v1[1] - v2[1] : v2[0] - v1[0]);
        int setSize = 0, l = -1, r = -1;
        for (int i = 0; i < intervals.length; ++i) {
            if (r < intervals[i][0]) {
                //intervals[i][0]已经比r更大，完全走出了覆盖区域，此时相当于重新选取元素，选(intervals[i][1] - 1)和intervals[i][1]最优
                l = intervals[i][1] - 1;
                ++setSize;
                r = intervals[i][1];
                ++setSize;
            } else if (l < intervals[i][0]) {
                //intervals[i]一定包含r元素
                //但不包含l元素，则l元素用r元素替代，相当于保持选取了r元素
                l = r;
                //此时r元素更新为intervals[i][1]即可完成2个元素的交集
                r = intervals[i][1];
                ++setSize;
            }
        }
        return setSize;
    }
}
